/*
package com.huey.utils.annotation.method;

import org.apache.commons.lang3.StringUtils;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

*/
/**
 * 拦截器类
 * @author xubo
 * @date 2022/7/12 16:42
 * 在HandlerInterceptorAdapter中主要提供了以下的方法：
 * preHandle：在方法被调用前执行。在该方法中可以做类似校验的功能。如果返回true，则继续调用下一个拦截器。如果返回false，则中断执行，也就是说我们想调用的方法 不会被执行，但是你可以修改response为你想要的响应。
 * postHandle：在方法执行后调用。
 * afterCompletion：在整个请求处理完毕后进行回调，也就是说视图渲染完毕或者调用方已经拿到响应。
 *//*


public class CheckPermissionInterceptor implements HandlerInterceptor {
    */
/**
     * 处理器处理之前调用
     *//*

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
                             Object handler) throws Exception {
        HandlerMethod handlerMethod = (HandlerMethod)handler;
        CheckPermission permission = findCheckPermission(handlerMethod);

        //获取注解中的值
        String userName = null; String userCode = null;
        if(permission != null) {
            userName = permission.userName();
            userCode = permission.userCode();
        }

        //如果没有添加权限注解则直接跳过允许访问
        if (StringUtils.isEmpty(userName) && StringUtils.isEmpty(userCode)) {
            return true;
        }

        */
/**这里校验是否有权限一般会到数据库中 或者redis中获取权限配置数据  查看此用户是否具有此权限
         这里为了测试 就直接写死了*//*

        if (! "admin".equals(userName) && "admin".equals(userCode)) {
            System.out.println("拦截器1--------------------");
            response.getOutputStream().write(permission.message().getBytes());
            return false;
        }
        return true;
    }

    */
/**
     * 在方法执行后调用
     *//*

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        //在方法执行后调用
    }

    */
/**
     * 在整个请求处理完毕后进行回调
     *//*

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        //在整个请求处理完毕后进行回调，也就是说视图渲染完毕或者调用方已经拿到响应

        //日志肯定是在afterCompletion之后记录的，否则中途失败了，也记录了，那就扯淡了。
        // 一定是程序正常跑完后，我们记录下那些对数据库做个增删改的操作日志进数据库。
        // 所以我们只需要继承HandlerInterceptorAdapter，并重写afterCompletion一个方法即可，
        // 因为preHandle默认是true。
    }


    */
/**
     * 根据handlerMethod返回注解信息
     *
     * @param handlerMethod 方法对象
     * @return PermissionCheck注解
     *//*

    private CheckPermission findCheckPermission(HandlerMethod handlerMethod) {
        //在方法上寻找注解
        CheckPermission permission = handlerMethod.getMethodAnnotation(CheckPermission.class);
        if (permission == null) {
            //在类上寻找注解
            permission = handlerMethod.getBeanType().getAnnotation(CheckPermission.class);
        }
        return permission;
    }
*/
/*    *//*
*/
/**
     * @throws NullPointerException {@inheritDoc}
     * @since 1.5
     *//*
*/
/*
    public <T extends Annotation> T getAnnotation(Class<T> annotationClass) {
        Objects.requireNonNull(annotationClass);
        return annotationClass.cast(declaredAnnotations().get(annotationClass));
    }*//*


}
*/
